package br.ufmg.dees.insane.ui.rich.learn.util.interfaces;
import java.text.DecimalFormat;

import br.ufmg.dees.insane.ui.rich.learn.util.input_output_dialogs.OutputDialog;
import br.ufmg.dees.insane.ui.rich.learn.util.input_output_dialogs.OutputTableDialog;
/** Curso de Mestrado - Computacao Aplicada a Engenharia 2004.1
* Trabalho em Grupo 
* Classe de controle de saida de dados de modelos genericos
* utilizando interface grafica de dialogos
*@author Grupo 08: Luciana, Renata e Marcos
*@version 1.00 06/07/04
*/
public class SaidaDados
{	
		/** Metodo mostraObjeto
   *Mostra os dados do objeto (toString)
   *@param texto titulo 
   *@param obj referencia ao objeto */
	public static void mostraObjeto(String texto,Object obj)
	{
		OutputDialog saida = new OutputDialog();		
		texto+="\n\n";
	 	texto+=obj;
	 	texto+="\n";
	 	saida.write(texto);
	} // fim mostraObjeto
	
	/** Metodo mostraObjetos
   *Mostra os dados dos objetos (toString)
   *@param texto titulo 
   *@param obj arranjo de referencias aos objetos */
	public static void mostraObjetos(String texto,Object[] obj)
	{
		OutputDialog saida = new OutputDialog();		
		texto+="\n\n";
		int n=obj.length;
	 	for (int i=0;i<n;i++) 
	 	{
	 		texto+=obj[i];
	 		texto+="\n";
	 	} 	
	 	texto+="\n";
	 	saida.write(texto);
	} // fim mostraObjetos
	
	
	
	
			
	/** Metodo mostraMatriz
	 * @param n ordem da matriz quadrada k
	 * @param mk matriz a ser exibida
	 * @param tituloQ titulo a ser exibido no quadro 
	 * @param tituloO titulo a ser exibido na orelha da tabela */
	public static void mostraMatriz(int n,double[][] mk,String tituloQ,String tituloO)
	{
		DecimalFormat f1 = new DecimalFormat("0.00E00");
		OutputTableDialog tabela= new OutputTableDialog(tituloQ,n);
		String rotc[]=new String[n+1];String rotl[]=new String[n];
		for (int i=1;i<n+1;i++) rotc[i]=""+i; // a 1a.coluna eh rotulo de linha
		rotc[0]="Lin - Col";
		for (int i=0;i<n;i++) rotl[i]=""+(i+1); // rotulos de linha
		tabela.addOutputTable(tituloO,rotc);
		tabela.initOutputTableColumn(0,rotl);
		String[] colunatemp=new String[n];
		for (int j=0;j<n;j++)
		{
			for (int i=0;i<n;i++)
			{
				colunatemp[i]=f1.format(mk[i][j]);
				tabela.initOutputTableColumn(j+1,colunatemp);
			}		
		}
		tabela.showDialog();		
	}
	
	/** Metodo mostraMatrizString
	 * @param nl numero de linhas da matriz ms
	 * @param nc numero de colunas da matriz ms
	 * @param ms matriz de strings a ser exibida
	 * A primeira linha e a primeira coluna sao tratadas como rotulos
	 * de linha e coluna
	 * @param tituloQ titulo a ser exibido no quadro 
	 * @param tituloO titulo a ser exibido na orelha da tabela */
	public static void mostraMatrizString
	(int nl,int nc,String[][] ms,String tituloQ,String tituloO)
	{
		OutputTableDialog tabela= new OutputTableDialog(tituloQ,nl-1);
		String rotc[]=new String[nc];
		// a 1a.linha de ms contem os rotulos de linha
		for (int i=0;i<nc;i++) rotc[i]=ms[0][i]; 
		tabela.addOutputTable(tituloO,rotc);
		// a 1a.coluna de ms contem os rotulos de linha
		String rotl[]=new String[nl-1];
		for (int i=1;i<nl;i++) rotl[i-1]=ms[i][0]; 		
		tabela.initOutputTableColumn(0,rotl);
		String[] colunatemp=new String[nl-1];
		for (int j=1;j<nc;j++)
		{
			for (int i=1;i<nl;i++)
			{
				colunatemp[i-1]=ms[i][j];
				tabela.initOutputTableColumn(j,colunatemp);
			}		
		}
		tabela.showDialog();		
	}
	
	
		 	 		
	}// fim da classe SaidaDados

